package ar.edu.utn.frsf.tpae.a2012.g05.facade.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import ar.edu.utn.frsf.tpae.a2012.g05.entity.Cliente;
import ar.edu.utn.frsf.tpae.a2012.g05.entity.Cuenta;
import ar.edu.utn.frsf.tpae.a2012.g05.entity.Movimiento;
import ar.edu.utn.frsf.tpae.a2012.g05.entity.Pago;
import ar.edu.utn.frsf.tpae.a2012.g05.exception.NegocioException;
import ar.edu.utn.frsf.tpae.a2012.g05.facade.HomeBankingFacade;
import ar.edu.utn.frsf.tpae.a2012.g05.service.ClienteService;
import ar.edu.utn.frsf.tpae.a2012.g05.service.CuentaService;
import ar.edu.utn.frsf.tpae.a2012.g05.service.MovimientoService;

@Service
public class HomeBankingFacadeImpl implements HomeBankingFacade {

	@Autowired @Qualifier("clienteService")
	private ClienteService clienteService;
	
	@Autowired @Qualifier("movimientoService")
	private MovimientoService movimientoService;
	
	@Autowired @Qualifier("cuentaService")
	private CuentaService cuentaService;
	
	public Cliente login(String nroCliente, String password) {
		return clienteService.login(nroCliente, password);
	}

	public void realizarPago(Pago pago) throws NegocioException {
		movimientoService.realizarPago(pago);
	}
	
	public List<Cuenta> findCuentasCliente(Cliente cliente) 
			throws NegocioException {
		return cuentaService.findCuentasCliente(cliente.getId());
	}

	public List<Movimiento> findMovimientosCuenta(Cuenta cuenta)
			throws NegocioException {
		Integer idCuenta = new Integer(0);
		if(cuenta!=null) {
			idCuenta = cuenta.getId();
		}
		return movimientoService.findMovimientosCuenta(idCuenta);
	}

	public void setClienteService(ClienteService clienteService) {
		this.clienteService = clienteService;
	}

	public void setMovimientoService(MovimientoService movimientoService) {
		this.movimientoService = movimientoService;
	}

	public void setCuentaService(CuentaService cuentaService) {
		this.cuentaService = cuentaService;
	}

	public Cuenta findCuentaById(Integer idCuenta) {
		return cuentaService.findCuentaById(idCuenta);
	}

}
